// array
import 'core-js/modules/es.array.iterator';
import 'core-js/modules/es.array.includes';
import 'core-js/modules/es.array.find';
import 'core-js/modules/es.array.find-index';
import 'core-js/modules/es.array.fill';
import 'core-js/modules/es.array.flat';
import 'core-js/modules/es.map';
import 'core-js/modules/es.set';
// string
import 'core-js/modules/es.string.ends-with';
import 'core-js/modules/es.string.includes';
import 'core-js/modules/es.string.starts-with';
// object
import 'core-js/modules/es.object.assign';
import 'core-js/modules/es.object.entries';
import 'core-js/modules/es.object.values';
// promise
import 'core-js/modules/es.promise';
import 'core-js/modules/es.promise.finally';
import 'core-js/modules/es.promise.all-settled';
// 样式
import './js/common.scss';
/**
 * pc端特有方法:
 * 		customPluginTheme		自定义控件主题
 * 		adaptResolution			自适应分辨率
 * 		adaptFontSize			自适应字体大小
 */
import utils from './js/utils';
// eslint-disable-next-line no-proto
window.Element=document.documentElement.__proto__.__proto__.__proto__.constructor;
/**
 * 表单列表自定义样式
 * @alias utils.customPluginTheme
 * @param theme {Object} 样式
 */
utils.customPluginTheme=function(theme){
	const setting=utils.defaultTemplate({
		borderColor:'#666',	// 边框色
		rowHeight:'36px', // 行高
		fontFamily:'Microsoft YaHei', // 字体
		fontSize:'14px', // 字体大小
		headBackgroundColor:'#fff', // 表头背景色
		headColor:'#333', // 表头字体色
		bodyColor:'#333', // 表体字体色
		hoverBackgroundColor:'#f5f5f5', // 鼠标悬停行背景色
		hoverColor:'#333', // 鼠标悬停行字体色
		selectBackgroundColor:'#f5f5f5', // 选中行背景色
		selectColor:'#333' // 选中行字体色
	},theme);
	document.head.insertAdjacentHTML('beforeend',
		'<link href="/seeyon/common/cap4/template/base/cap4-icon/iconfont.css" rel="stylesheet" type="text/css"/>'+
		'<style>'+
		'#mytabletb{background:#fff;height:40px;display:flex;align-items:center;padding:0 8px;}'+
		'#mytabletb>a{margin-right:6px;border:1px solid #d4d4d4;background-color:#fff;padding:0 10px;border-radius:15px;height:30px;line-height:28px;font-size:14px;color:#666;cursor:pointer;max-width:200px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;font-family:"Microsoft YaHei";}'+
		'#mytabletb>a:hover{border-color:#1f85ec;}'+
		'#mytabletb>a>.CAP{font-size:14px;margin-right:5px;}'+
		'#mytabletb,.panel-header,.panel-body,.datagrid-header,.datagrid-toolbar,.datagrid-pager,.datagrid-footer-inner,.datagrid-header td,.datagrid-body td,.datagrid-footer td{border-color:'+setting.borderColor+';}'+
		'.datagrid-header-row,.datagrid-row{height:'+setting.rowHeight+'!important;}'+
		'html,body,div,dl,dt,dd,pre,code,form,input,button,textarea,p,th,td,ul,li{font-family:"'+setting.fontFamily+'"}'+
		'.datagrid-cell,.datagrid-cell-group,.datagrid-header-rownumber,.datagrid-cell-rownumber,.tree-title,.datagrid-header .datagrid-cell span{font-size:'+setting.fontSize+';}'+
		'.datagrid-header-row td,.datagrid-header td.datagrid-header-over{background:'+setting.headBackgroundColor+';}'+
		'.datagrid-header .datagrid-cell,.datagrid-cell-group{color:'+setting.headColor+';}'+
		'.datagrid-htable,.datagrid-btable,.datagrid-ftable{color:'+setting.bodyColor+';}'+
		'.datagrid-row-over{background:'+setting.hoverBackgroundColor+';color:'+setting.hoverColor+';}'+
		'.datagrid-row-selected{background:'+setting.selectBackgroundColor+';color:'+setting.selectColor+';}'+
		'</style>');
};
/**
 * 自适应分辨率
 * @alias utils.adaptResolution
 * @param {Number} designWidth 设计时使用的宽度
 * @param {Object} [option] 选项对象
 * @param {Boolean} option.adaptWindow 窗口大小改变时也自适应(不仅仅根据分辨率)
 * @param {Number} option.heightRate 高宽比(固定高宽比)
 * @param {Document} option.dom 缩放的容器,容器只能有1个子节点
 */
utils.adaptResolution=function(designWidth,option){
	option=option||{};
	const innerWidth=window.innerWidth;
	const width=option.adaptWindow?innerWidth:window.screen.width;
	const heightRate=option.heightRate;
	const dom=option.dom;
	let container;
	let child;
	if(dom){
		container=dom;
		child=dom.firstElementChild;
	}else{
		container=document.documentElement;
		child=document.body;
	}
	const style=window.getComputedStyle(container);
	const style1=container.style;
	const style2=child.style;
	const initialWidth=parseFloat(style.width);
	const initialHeight=parseFloat(style.height);
	const scale=width/designWidth;
	const totalWidth=initialWidth/scale;
	const totalHeight=totalWidth*(heightRate||initialHeight/initialWidth);
	requestAnimationFrame(function(){
		if(heightRate) style1.height=initialWidth*heightRate+'px';
		style1.position='relative';
		style2.transform='scale('+scale+')';
		style2.width=totalWidth+'px';
		style2.height=totalHeight+'px';
		// 兼容360的居中
		style2.top='calc(50% - '+totalHeight+'px / 2)';
		style2.left='calc(50% - '+totalWidth+'px / 2)';
		style2.position='absolute';
	});
};
/**
 * 自适应字体大小
 * @alias utils.adaptFontSize
 * @param {Number} designWidth 设计时使用的宽度
 * @param {Object} [option] 选项对象
 * @param {Boolean} option.adaptWindow 窗口大小改变时也自适应(不仅仅根据分辨率)
 * @param {Number} option.min 最小的字体
 */
utils.adaptFontSize=function(designWidth,option){
	option=option||{};
	const width=option.adaptWindow?window.innerWidth:window.screen.width;
	const html=document.documentElement;
	html.style.removeProperty('font-size');
	let fontSize=parseInt(getComputedStyle(html).fontSize);
	fontSize=Math.max(option.min||0,Math.round(fontSize/designWidth*width*10)/10);
	html.style.setProperty('font-size',fontSize+'px','important');
};
window.utils=utils;
export default utils;
